home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Database / Datastore.DMS / in.adf / Install Datastore < prev    next >
Encoding:
Text File  |  1995-08-30  |  42.1 KB  |  1,734 lines

  1. ; $VER: Digita Datastore Installer Script 14/11/94
  2. ; Copyright (C) Digita International
  3.  
  4. ;------------------------------------------------------
  5. ; ### Variable declarations
  6. (set #ProgName "Datastore")
  7. (set #NumberInstallDisks 1)
  8. (set #DSInstallDisk "DSInstall")
  9. (set #NumNewDSDisks 2)
  10. (set #DSDiskName "Datastore")
  11. (set #DSFilesName "DS-Files")
  12. (set #RamTempFile "RAM:DSTemp")
  13. (set #RamUtils "RAM:DSUtils")
  14. (set #HDSpaceNeededBytes (* (* 1 1024) 1024)) ;1MB free
  15. (set #NumFonts 3)
  16. (set #Font1Name "Condensed60.font")
  17. (set #Font2Name "newtopaz.font")
  18. (set #Font3Name "DGSansSerif.font")
  19. (set #DriverDest "DEVS:Printers")
  20. (set #DSToolDest (cat #DSDiskName ":Datastore"))
  21. (set #HelpTool "HELP")
  22. (set #DocsTool "DEFFILES")
  23. (set #PicsTool "DEFPICTURES")
  24. (set #LanguageTool "LANGUAGE")
  25.  
  26. ;------------------------------------------------------
  27. ; ### String declaration
  28. ;// Drawer names
  29. (set #DSDrawerName "Datastore")
  30. (set #DSHelpName "Help")
  31. (set #DSDocsName "Databases")
  32. (set #DSPicsName "Pictures")
  33. (set #DSFontsName "Fonts")
  34. (set #LibsDefault "Libs")
  35. (set #DataTypesDrawerName "DataTypes")
  36. (set #ClassesDrawerName "Classes")
  37.  
  38. ;------------------------------------------------------
  39. ;// Archive Names
  40. (set #ASLArchiveName "asl.lha")
  41. (set #AmigaGuideArchiveName "Amigaguide.lha")
  42. (set #ProgArchiveName "Datastore.lha")
  43. (set #HelpArchiveName "Help.lha")
  44. (set #DocsArchiveName "Databases.lha")
  45. (set #PicsArchiveName "Pictures.lha")
  46. (set #SystemFontsArchiveName "Fonts.lha")
  47. (set #StartupArchiveName "startup.lha")
  48. (set #MathLibsArchiveName "mathlibs.lha")
  49. (set #DataTypesArchiveName "datatypes.lha")
  50. (set #ClassesArchiveName "classes.lha")
  51. (set #DataTypesLibArchiveName "datatypeslib.lha")
  52. (set #DevicesArchiveName "Devices.lha")
  53.  
  54.  
  55. ;------------------------------------------------------
  56. ;// File Names
  57. (set #LibsSource (cat #DSInstallDisk ":libs"))
  58.  
  59. ;------------------------------------------------------
  60. ;// Message strings
  61. (set #BadKick
  62.     (cat #ProgName " benötigt Workbench 2.04 oder höher.")
  63. )
  64.  
  65. (set #CheckStartup
  66.     (cat "\n\n\nBitte warten...\n\nDas Installationsprogramm prüft ihr System.")
  67. )
  68.  
  69. (set #DestChoicePrompt
  70.     (cat "\n\n\n Wo soll " #ProgName " installiert werden?")
  71. )
  72.  
  73. (set #FloppyChoiceMsg
  74.     (cat "Auf Disketten")
  75. )
  76.  
  77. (set #HardDiskChoiceMsg
  78.     (cat "Auf einer Festplatte")
  79. )
  80.  
  81. (set #DestChoiceHelp
  82.     (cat "\nKlicken Sie auf  \"Auf einer Festplatte\", wenn "
  83.         "" #ProgName " auf einer Festplatte zu installieren.\n\n"
  84.         "Wählen Sie \"Auf Disketten\" aus, um " #Progname " "
  85.         "auf einem Diskettensatz zu installieren.\n\n\n"
  86.     )
  87. )
  88.  
  89. (set #HardDiskDestChoiceMsg
  90.     (cat "Wo soll das Verzeichnis \n" #ProgName " installiert werden?")
  91. )
  92.  
  93. (Set #HDBootedFromFloppy
  94.     (cat "Es scheint, als wollten Sie auf Festplatte installieren, hätten "
  95.          "aber von Diskette gestartet. Dies funktioniert nicht.\n\n"
  96.          "Starten Sie Ihren Amiga ohne Disketten in den Laufwerken neu, "
  97.          "damit er von der Festplatte startet, und installieren Sie "
  98.          "" #ProgName " erneut."
  99.     )
  100. )
  101.  
  102. (set #PrinterChoicePrompt
  103.     (cat "\n\nMöchten Sie einen Druckertreiber installieren?"
  104.     )
  105. )
  106.  
  107. (set #PrinterChoicemsg1 "Ja")
  108. (set #PrinterChoicemsg2 "Nein")
  109.  
  110. (set #PrinterChoice-Help
  111.     (cat "Um in " #ProgName " gespeicherte Daten auch drucken zu können, "
  112.              "müssen Sie einen geeigneten Treiber für Ihren Drucker auswählen. "
  113.              "Klicken Sie auf '" #PrinterChoicemsg1 "', um jetzt einen Treiber "
  114.              "auszuwählen, oder auf '" #PrinterChoicemsg2 "', wenn kein "
  115.              "Druckertreiber installiert werden soll. "
  116.     )
  117. )
  118.  
  119. (set #HardDiskDestChoiceHelp
  120.     (cat "Klicken Sie auf das gewünschte Zielverzeichnis für " #ProgName
  121.         ", und dann auf Weiter. (Ein Verzeichnis \"" #DSDrawerName
  122.         "\" wird erstellt, und enhält das " #ProgName " -Programm.)"
  123.     )
  124. )
  125.  
  126. (set #NoDiskSpaceMsg1
  127.     (cat "\n Zu wenig freier Speicher auf der Festplatte vorhanden. "
  128.             ". Sie benötigen mindestens  "
  129.     )
  130. )
  131.  
  132. (set #NoDiskSpaceMsg2
  133.     (cat "MB freien Speicherplatz.\n\nKlicken Sie auf \"Abbrechen\" um, die "
  134.         "Installation zu beenden, und löschen Sie einige unbenötigte Dateien,"
  135.                 "oder klicken Sie auf \"Weiter\", um " #Progname " auf einer "
  136.         "anderen Partition zu installieren."
  137.     )
  138. )
  139.  
  140. (set #DrawerExistsMsg
  141.     (cat "\nEine Schublade namens \"" #DSDrawerName "\" existiert bereits "
  142.         "auf der ausgewählten Zielpartition.\n\nErsetzen oder ein "
  143.         "anderes Zielverzeichnis wählen?\n\n"
  144.     )
  145. )
  146.  
  147. (set #DrawerExistsChoice1 "Ersetzen")
  148.  
  149. (set #DrawerExistsChoice2 "Neues Zielverzeichnis")
  150.  
  151. (set #DrawerExistsHelp
  152.     (cat "\nIm Verzeichnis  \"#DSDrawerName \" wurde schon"
  153.         "eine Installation gefunden.\n\nKlicken Sie auf \""
  154.         #DrawerExistsChoice1 "\" um sie durch die neue Version von "
  155.         "von " #ProgName " zu ersetzen.\nKlicken Sie auf \"" #DrawerExistsChoice2 "\", um ein "
  156.         "neues Zielverzeichnis auszuwählen.\n\n"
  157.         "Wenn Sie \"" #DrawerExistsChoice1 "\" auswählen, sollten Sie "
  158.         "von allen noch benötigten Dateien zunächst eine Kopie erstellen."
  159.     )
  160. )
  161.  
  162. (set #InstallChoice1 "Ja - Ersetzen")
  163.  
  164. (set #InstallChoice2 "Nein")
  165.  
  166. (set #OldASLLibraryMsg
  167.     (cat "Die ASL.library existiert entweder nicht oder in der falschen Version. "
  168.         #ProgName " benötigt mindestens Version 38 dieser "
  169.         "Bibliothek. Möchten Sie diese jetzt installieren?"
  170.     )
  171. )
  172.  
  173. (set #OldASLLibraryHelp
  174.     (cat #ProgName " benötigt zum Betrieb mind. Version 38 "
  175.         "der ASL.library (Workbench 2.1 oder höher).\n\n"
  176.         "Wählen Sie \"" #InstallChoice1 "\" , um Version 38 und "
  177.         "anschließend " #ProgName " zu installieren.\n "
  178.                 "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
  179.         "38 der ASL.library nicht installiert werden soll."
  180.     )
  181. )
  182.  
  183. (set #OldDiskFontLibraryMsg
  184.     (cat  "Die diskfont.library existiert entweder nicht oder in der falschen Version. "
  185.         #ProgName " benötigt mindestens Version 37 dieser "
  186.         "Bibliothek. Möchten Sie diese jetzt installieren?"
  187.  
  188.     )
  189. )
  190.  
  191. (set #OldDiskFontLibraryHelp
  192.     (cat #ProgName " benötigt zum Betrieb mind. Version 37 "
  193.         "der diskfont.library (Workbench 2.04 oder höher).\n\n"
  194.         "Wählen Sie \"" #InstallChoice1 "\" , um Version 38 und "
  195.         "anschließend " #ProgName " zu installieren.\n "
  196.                 "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
  197.         "38 der ASL.library nicht installiert werden soll und "
  198.                 "Sie die Installation abbrechen möchten."
  199.     )
  200. )
  201.  
  202. (set #OldAmigaGuideLibraryMsg
  203.     (cat "Die amigaguide.library existiert entweder nicht oder in der falschen Version. "
  204.         #ProgName " benötigt mindestens Version 34.11 dieser "
  205.         "Bibliothek. Möchten Sie diese jetzt installieren?"
  206.     )
  207. )
  208.  
  209. (set #OldAmigaGuideLibraryHelp
  210.     (cat #ProgName " benötigt zum Betrieb mind. Version 34.11 "
  211.         "der amigaguide.library.\n\n"
  212.         "Wählen Sie \"" #InstallChoice1 "\" , um Version 34.11 "
  213.         "zu installieren.\n "
  214.                 "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
  215.         "34.11 der amigaguide.library nicht installiert werden soll. "
  216.     )
  217. )
  218.  
  219. (set #OldLocaleLibraryMsg
  220.     (cat "Die locale.library existiert entweder nicht oder in der falschen Version. "
  221.         #ProgName " benötigt mindestens Version 38 dieser "
  222.         "Bibliothek. Möchten Sie diese jetzt installieren?"
  223.     )
  224. )
  225.  
  226. (set #OldLocaleLibraryHelp
  227.     (cat #ProgName " benötigt zum Betrieb mind. Version 38 "
  228.         "der locale.library.\n\n"
  229.         "Wählen Sie \"" #InstallChoice1 "\" , um Version 38 "
  230.         "zu installieren.\n "
  231.                 "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
  232.         "38 der locale.library nicht installiert werden soll. "
  233.     )
  234. )
  235.  
  236. (set #OldParseLibraryMsg
  237.     (cat "Die iffparse.library existiert entweder nicht oder in der falschen Version. "
  238.         #ProgName " benötigt mindestens Version 34 dieser "
  239.         "Bibliothek. Möchten Sie diese jetzt installieren?"
  240.     )
  241. )
  242.  
  243. (set #OldParseLibraryHelp
  244.     (cat #ProgName " benötigt zum Betrieb mind. Version 34 "
  245.         "der iffparse.library.\n\n"
  246.         "Wählen Sie \"" #InstallChoice1 "\" , um Version 34 "
  247.         "zu installieren.\n "
  248.                 "Wählen Sie  \"" #InstallChoice2 "\", wenn die Version "
  249.         "34 der iffparse.library nicht installiert werden soll. "
  250.     )
  251. )
  252.  
  253. (set #InsertDiskMsg
  254.     (cat "\nBitte folgende Diskette einlegen: \n\n")
  255. )
  256.  
  257. (set #diskhelp
  258.     (cat "\nWenn Sie sicher sind, daß sich die korrekte Diskette im Laufwerk "
  259.         "befindet, ist deren Name evtl. falsch. \n"
  260.         "Vergewissern Sie sich, daß dem Namen nicht das Präfix "
  261.                 " 'copy_of_'voransteht, und daß er keine Leerzeichen enthält.\n\n\n" @askdisk-help
  262.     )
  263. )
  264.  
  265. (set #Unpackmsg1 "Dateien werden entpackt ")
  266. (set #Unpackmsg2 " nach ")
  267. (set #Unpackmsg3 "\n\nEinen Moment, bitte...")
  268.  
  269. (set #ArchiveAbortMsg1
  270.     (cat "Fehler beim Entpacken")
  271. )
  272.  
  273. (set #ArchiveAbortMsg2
  274.     (cat "'. Versuchen Sie, das Programm in ein anderes Verzeichnis "
  275.         "oder eine anderen Partition zu installieren. Sollte auch "
  276.                 "dies fehlschlagen, wenden Sie sich bitte an den technischen "
  277.                 "Kundendienst. "
  278.     )
  279. )
  280.  
  281. (set #BlankDiskWarning
  282.     (cat "\nLegen Sie eine Leerdiskette in das interne Laufwerk,\n"
  283.         "und klicken Sie auf \"Weiter\"."
  284.         "\n\nVORSICHT: Alle auf der Diskette vorhandenen Daten "
  285.         "werden gelöscht."
  286.     )
  287. )
  288.  
  289. (set #FloppyWarningHelp
  290.     (cat     "\nBei diesem Vorgang wird die Diskette im internen "
  291.                 "Laufwerk formatiert und damit für den Gebraucht mit "
  292.                 "Datastore vorbereitet. "
  293.                 "\n\n Erstellen Sie vor der Installation unbedingt "
  294.                 "eine Kopie Ihrer Originaldisketten, und bewahren "
  295.                 "Sie sie an einem sicheren Ort auf. "
  296.                 "Außerdem sollten Sie den Schreibschutz setzen, bevor "
  297.                 "Sie auf \"Weiter\" klicken. "
  298.     )
  299. )
  300.  
  301. (set #NotBlankMsg1
  302.     (cat "\nSie haben die Diskette \"")
  303. )
  304.  
  305. (set #NotBlankMsg2
  306.     (cat "\" im internen Laufwerk.\n\nBitte ersetzen Sie "
  307.         "diese Diskette durch eine Leerdiskette, bevor "
  308.         "Sie auf \"Weiter\" klicken."
  309.     )
  310. )
  311.  
  312. (set #FormatWorkingMsg
  313.     (cat "Einen Moment, bitte: Diskette wird formatiert.")
  314. )
  315.  
  316. (set #FormatError
  317.     (cat     "\nBei dem Versuch, diese Diskette zu formatieren, "
  318.                 "ist ein Fehler aufgetreten. "
  319.                 "Bitte versuchen Sie es mit einer anderen Diskette "
  320.                 "erneut. "
  321.     )
  322. )
  323.  
  324. (set #FormatErrorHelp
  325.     (cat "\nBeim Formatieren der Diskette ist ein Fehler "
  326.                 "aufgetreten. Die Anzahl möglicher Ursachen ist "
  327.                 "groß, meist handelt es sich jedoch um einen Defekt "
  328.                 "der Diskette oder des Laufwerks.\nBitte probieren "
  329.                 "Sie zunächst eine andere Diskette aus und prüfen "
  330.                 "Sie das Laufwerk auf einwandfreie Funktion, bevor "
  331.                 "Sie sich an unseren Kundendienst wenden. "
  332.     )
  333. )
  334.  
  335. (set #FormatCompleteMsg1
  336.     (cat " erstell.\n\nNehmen Sie die Diskette aus dem "
  337.         "internen Laufwerk, beschriftenn Sie sie mit \""
  338.     )
  339. )
  340.  
  341. (set #FormatCompleteMsg2
  342.     (cat "\", und klicken Sie auf \"Weiter\".")
  343. )
  344.  
  345. (set #FormatChoiceprompt
  346.     (cat "\n" #ProgName " wird bei der Installation zwei Disketten "
  347.                 "formatieren und mit Namen versehen. "
  348.         "Weitere Informationen unter 'Hilfe'. Möchten Sie:"
  349. ))
  350.  
  351. (set #FormatChoicemsg1 "Einige Leerdisketten normal formatieren")
  352.  
  353. (set #FormatChoicemsg2 "Einige Leerdisketten schnell formatieren")
  354.  
  355. (set #FormatChoice-Help
  356.     (cat "Dieses Installationsprogramm muß zur Installation von " #ProgName " "
  357.              "zunächst zwei Disketten formatieren und mit Namen versehen. "
  358.              "\n\n Wählen Sie '" #FormatChoicemsg1 "', um die Disketten normal "
  359.              "zu formatieren, oder '" #FormatChoicemsg2 "', um Disketten, die "
  360.          "bereits mit dem Fast File System formatiert sind, schnell zu "
  361.              "formatieren. "
  362. ))
  363.  
  364. (set #FloppyFinishedMsg
  365.     (cat "\nNach dem Anklicken von 'Weiter', legen Sie die \"" #DSDiskName
  366.         "\" -Diskette in das interne Diskettenlaufwerk, und starten "
  367.              "Sie Ihren Amiga neu.\n "
  368.     )
  369. )
  370.  
  371. (set #WorkingMsg (cat "Einen Moment, bitte...\n\nInstalliere " #ProgName))
  372.  
  373. (set #CreateDiskPrompt "\nFolgende erstellen:\n\n")
  374.  
  375. (set #ChoiceContinue "Ja")
  376.  
  377. (set #ChoiceSkip "Diesen Teil überspringen")
  378.  
  379. (set #CreateDSDiskHelp
  380.     (cat "\nDie Diskette '" #DSDiskName "' enthält alle "
  381.         #ProgName " Programmdateien. \n\nWenn Sie die Diskette "
  382.         #DSDiskName " erstellen möchten, klicken Sie auf '" #ChoiceContinue "'.\n "
  383.                 " Wenn Sie diese Diskette nicht erstellen möchten, klicken Sie auf '" #ChoiceSkip "'."
  384.     )
  385. )
  386.  
  387. (set #CreateFilesDiskHelp
  388.     (cat "\nDie Diskette '" #DSFilesName "' enthält alle "
  389.         #ProgName " Hilfs- und Datendateien. \n\nWenn Sie die Diskette "
  390.         #DSFilesName " erstellen möchten, klicken Sie auf '" #ChoiceContinue "'.\n "
  391.                 "Wenn Sie diese Diskette nicht erstellen möchten, klicken Sie auf '" #ChoiceSkip "'."
  392.     )
  393. )
  394.  
  395.  
  396.  
  397. ;------------------------------------------------------
  398. ; ### Procedure declarations
  399.  
  400. ;------------------------------------------------------
  401. ;// routine to get disk specified in '#FileSourceDisk'
  402. (procedure @GetDisk
  403.     (
  404.         (askdisk
  405.             (prompt #InsertDiskMsg #FileSourceDisk)
  406.             (help #diskhelp)
  407.             (dest #FileSourceDisk)
  408.         )
  409.     )
  410. )
  411.  
  412. ;------------------------------------------------------
  413. ;// Procedure to decompress file set in '#UnpackFile' to '#UnpackDest'
  414. (procedure @UnpackFiles
  415.     (
  416.       (working #Unpackmsg1 #UnpackFile #Unpackmsg2 #UnpackDest #Unpackmsg3)
  417.         (set ExpandName #UnpackFile)
  418.         (set #ArchiveError 0)
  419.         (set RunLhx
  420.             (cat "DSUtils:Lhx -I -m e \"" ExpandName "\" \"" #UnpackDest "\"")
  421.         )
  422.         (set #ArchiveError (run RunLhx))
  423.         (if (> #ArchiveError 0)
  424.             (ca
  425.                 (set #ArchiveAbortMsg (cat #ArchiveAbortMsg1 ExpandName #ArchiveAbortMsg2))
  426.                 (abort #ArchiveAbortMsg)
  427.             )
  428.         )
  429.     )
  430. )
  431.  
  432. ;------------------------------------------------------
  433. ;// Initial Checks
  434. (procedure @InitialChecks
  435.     (
  436.         ;// Check OS version
  437.         (working #CheckStartup)
  438.  
  439.         (set #OSVerNum (getversion))
  440.         (set #OSVersion (/ #OSVerNum 65536))
  441.  
  442.         (if (< #OSVersion 37)
  443.             (abort #BadKick)
  444.         )
  445.         (if (< #OSVersion 39) ; WB2.##
  446.             (set #InstallDataTypes "False")
  447.           (set #InstallDataTypes "True")
  448.         )
  449.  
  450.         ;// Create temp file in ram: for files
  451.         (if (not (exists #RamTempFile))
  452.             (
  453.                 (makedir #RamTempFile (safe))
  454.             )
  455.         )
  456.     (makeassign "DSTemp" #RamTempFile (safe))
  457.  
  458.         ;// Create temp file in ram: for utils
  459.         (if (not (exists #RamUtils))
  460.             (
  461.                 (makedir #RamUtils (safe))
  462.             )
  463.         )
  464.     (makeassign "DSUtils" #RamUtils (safe))
  465.  
  466.     ;// Set flag if novice user
  467.     (set #UserNovice 0)
  468.     (if (= @user-level 0)
  469.       (
  470.         (set #UserNovice 1)
  471.       )
  472.     )
  473.       (copyfiles
  474.             (source (cat #DSInstallDisk ":Utils"))
  475.             (dest "DSUtils:")
  476.             (all)
  477.             (nogauge)
  478.             (optional "nofail")
  479.         )
  480.       ;// don't copy delete to DSUtils, as it is used to delete DSUtils!
  481.       (copyfiles
  482.             (source (cat #DSInstallDisk ":c"))
  483.             (dest "Ram:")
  484.             (pattern "delete")
  485.             (nogauge)
  486.             (optional "nofail")
  487.         )
  488.       (copyfiles
  489.             (source (cat #DSInstallDisk ":System"))
  490.             (dest "DSUtils:")
  491.             (pattern "format")
  492.             (nogauge)
  493.             (optional "nofail")
  494.         )
  495.     )
  496. )
  497.  
  498. ;------------------------------------------------------
  499. ;// Check that ASL library if from WB 2.1 (if not replace)
  500. (procedure @CheckASL
  501.     (
  502.         (set ASLVerNum (getversion (cat #LibsDefault ":ASL.library")))
  503.         (set ASLVer (/ ASLVerNum 65536))
  504.         (if (< ASLVer 38)
  505.             (
  506.         (if (= @user-level 2)
  507.             (
  508.                 (set InstallASLLibrary
  509.                   (askbool
  510.                        (prompt #OldASLLibraryMsg)
  511.                        (choices #InstallChoice1 #InstallChoice2)
  512.                        (help #OldASLLibraryHelp)
  513.                        (default 1)
  514.                   )
  515.                     )
  516.                 (if (= InstallASLLibrary 1)
  517.                      (
  518.                        (@InstallASL)
  519.                   )
  520.                 )
  521.               )
  522.               (
  523.                   (@InstallASL)
  524.               )
  525.             )
  526.           )
  527.         ) ;endif
  528.     )
  529. )
  530.  
  531. ;------------------------------------------------------
  532. ;// Procedure to install the asl library
  533. (procedure @InstallASL
  534.     (
  535.     (set #UnpackFile (cat #ArchiveLocation #ASLArchiveName))
  536.     (set #UnpackDest #LibsDest)
  537.  
  538.         (if (exists (cat #UnpackDest "asl.library"))
  539.             (delete (cat #UnpackDest "asl.library")
  540.                 (optional "force")
  541.             )
  542.         )
  543.     (@UnpackFiles)
  544.     )
  545. )
  546.  
  547. ;------------------------------------------------------
  548. ;// Check that Locale library is from WB 2.1 (if not replace)
  549. (procedure @CheckLocale
  550.     (
  551.         (set LocaleVerNum (getversion (cat #LibsDefault ":Locale.library")))
  552.         (set LocaleVer (/ LocaleVerNum 65536))
  553.         (if (< LocaleVer 38)
  554.             (
  555.         (if (= @user-level 2)
  556.             (
  557.                 (set InstallLocaleLibrary
  558.                   (askbool
  559.                        (prompt #OldLocaleLibraryMsg)
  560.                        (choices #InstallChoice1 #InstallChoice2)
  561.                        (help #OldLocaleLibraryHelp)
  562.                        (default 1)
  563.                   )
  564.                     )
  565.                 (if (= InstallLocaleLibrary 1)
  566.                      (
  567.                        (@InstallLocale)
  568.                   )
  569.                 )
  570.               )
  571.               (
  572.                   (@InstallLocale)
  573.               )
  574.             )
  575.           )
  576.         ) ;endif
  577.     )
  578. )
  579.  
  580. ;------------------------------------------------------
  581. ;// Procedure to install the locale library
  582. (procedure @InstallLocale
  583.     (
  584.         (if (exists (cat #LibsDefault ":locale.library"))
  585.             (
  586.                 (delete (cat #LibsDefault ":locale.library")
  587.                     (optional "force")
  588.                 )
  589.             )
  590.         )
  591.  
  592.         (copyfiles
  593.             (source #LibsSource)
  594.             (dest (cat #LibsDefault ":"))
  595.             (pattern "locale.library")
  596.             (optional "force")
  597.         )
  598.     )
  599. )
  600.  
  601.  
  602. ;------------------------------------------------------
  603. ;// Check that IFFParse library if from WB 1.3 (if not replace)
  604. (procedure @CheckParse
  605.     (
  606.         (set ParseVerNum (getversion (cat #LibsDefault ":iffparse.library")))
  607.         (set ParseVer (/ ParseVerNum 65536))
  608.         (if (< ParseVer 34)
  609.             (
  610.         (if (= @user-level 2)
  611.             (
  612.                 (set InstallParseLibrary
  613.                   (askbool
  614.                        (prompt #OldParseLibraryMsg)
  615.                        (choices #InstallChoice1 #InstallChoice2)
  616.                        (help #OldParseLibraryHelp)
  617.                        (default 1)
  618.                   )
  619.                     )
  620.                 (if (= InstallParseLibrary 1)
  621.                      (
  622.                        (@InstallParse)
  623.                   )
  624.                 )
  625.               )
  626.               (
  627.                   (@InstallParse)
  628.               )
  629.             )
  630.           )
  631.         ) ;endif
  632.     )
  633. )
  634.  
  635. ;------------------------------------------------------
  636. ;// Procedure to install the iffparse library
  637. (procedure @InstallParse
  638.     (
  639.         (if (exists (cat #LibsDefault ":iffparse.library"))
  640.             (
  641.                 (delete (cat #LibsDefault ":iffparse.library")
  642.                     (optional "force")
  643.                 )
  644.             )
  645.         )
  646.  
  647.         (copyfiles
  648.             (source #LibsSource)
  649.             (dest (cat #LibsDefault ":"))
  650.             (pattern "iffparse.library")
  651.             (optional "force")
  652.         )
  653.     )
  654. )
  655.  
  656.  
  657. ;------------------------------------------------------
  658. ;// Check that diskfont library is at least WB 2.1 (if not replace)
  659. (procedure @CheckDiskFont
  660.     (
  661.         (set DFVerNum (getversion (cat #LibsDefault ":diskfont.library")))
  662.         (set DFVer (/ DFVerNum 65536))
  663.         (if (< DFVer 37)
  664.             (
  665.         (if (= @user-level 2)
  666.             (
  667.                 (set InstallDiskFontLibrary
  668.                   (askbool
  669.                        (prompt #OldDiskFontLibraryMsg)
  670.                        (choices #InstallChoice1 #InstallChoice2)
  671.                        (help #OldDiskFontLibraryHelp)
  672.                        (default 1)
  673.                   )
  674.                     )
  675.                 (if (= InstallDiskFontLibrary 1)
  676.                      (
  677.                        (@InstallDiskFont)
  678.                   )
  679.                 ) ;end if
  680.               )
  681.               (
  682.                   (@InstallDiskFont)
  683.               )
  684.             ) ;end if
  685.           )
  686.         ) ;endif
  687.     )
  688. )
  689.  
  690. ;------------------------------------------------------
  691. ;// Procedure to install the diskfont library
  692. (procedure @InstallDiskFont
  693.     (
  694.         (if (exists (cat #LibsDefault "diskfont.library"))
  695.             (delete (cat #LibsDefault "diskfont.library")
  696.                 (optional "force")
  697.             )
  698.         )
  699.         (copyfiles
  700.             (source #LibsSource)
  701.             (dest (cat #LibsDefault ":"))
  702.             (pattern "diskfont.library")
  703.             (optional "force")
  704.         )
  705.     )
  706. )
  707.  
  708. ;------------------------------------------------------
  709. ;** Check that AmigaGuide library is at least version 34.11 (if not replace)
  710. (procedure @CheckAmigaGuide
  711.     (
  712.         (set AGVerNum (getversion (cat #LibsDefault ":amigaguide.library")))
  713.         (set AGVer (/ AGVerNum 65536))
  714.         (set AGRev (- AGVerNum (* AGVer 65536)))
  715.         (if (< AGVer 35)
  716.             (
  717.         (if (< AGRev 11)
  718.             (
  719.                 (if (= @user-level 2)
  720.                     (
  721.                         (set InstallAmigaGuideLibrary
  722.                           (askbool
  723.                                (prompt #OldAmigaGuideLibraryMsg)
  724.                                (choices #InstallChoice1 #InstallChoice2)
  725.                                (help #OldAmigaGuideLibraryHelp)
  726.                                (default 1)
  727.                           )
  728.                             )
  729.                         (if (= InstallAmigaGuideLibrary 1)
  730.                              (
  731.                                (@InstallAmigaGuide)
  732.                           )
  733.                         );end if
  734.                       )
  735.                       (
  736.                           (@InstallAmigaGuide)
  737.                       )
  738.                     ) ;end if (user-level)
  739.                   )
  740.                 ) ;end if (revision)
  741.           )
  742.         ) ;end if (version)
  743.     )
  744. )
  745.  
  746. ;------------------------------------------------------
  747. ;// Procedure to install amigaguide library
  748. (procedure @InstallAmigaGuide
  749.     (
  750.     (set #UnpackFile (cat #ArchiveLocation #AmigaGuideArchiveName))
  751.     (set #UnpackDest #LibsDest)
  752.         (if (exists (cat #UnpackDest "amigaguide.library"))
  753.             (delete (cat #UnpackDest "amigaguide.library")
  754.                 (optional "force")
  755.             )
  756.         )
  757.     (@UnpackFiles)
  758.   )
  759. )
  760.  
  761. ;------------------------------------------------------
  762. ;// Procedure to unprotect screen fonts if already present
  763. (procedure @UnProtectFonts
  764.     (
  765.         (set #Counter 0)
  766.         (while (< #Counter #NumFonts)
  767.         (
  768.             (set #FontName
  769.                 (select #Counter
  770.                     #Font1Name
  771.                     #Font2Name
  772.                     #Font3Name
  773.                 )
  774.             )
  775.             (set #CheckFont (tackon #SystemFontsDest #FontName))
  776.             (if (exists #CheckFont)
  777.               (
  778.                 (protect #CheckFont "+r+w+e+d")
  779.               )
  780.             )
  781.           (set #Counter (+ #Counter 1))
  782.         )
  783.         )
  784.     )
  785. )
  786.  
  787. ;------------------------------------------------------
  788. ;// Procedure to de-archive screen fonts
  789. (procedure @DearchiveScreenFonts
  790.     (
  791.     (set #UnpackFile (cat #ArchiveLocation #SystemFontsArchiveName))
  792.         (set #UnpackDest #SystemFontsDest)
  793.         (@UnpackFiles)
  794.   )
  795. )
  796.  
  797. ;------------------------------------------------------
  798. ;// Install to HD or Floppy ?
  799. (procedure @CheckHDorFloppy
  800.     (
  801.         ;// Floppy or HD ?
  802.         (set #FullPath (expandpath "sys:"))
  803.         (if (= #FullPath (cat #DSInstallDisk ":"))
  804.             (set #DiskDefault 1)
  805.             (set #DiskDefault 0)
  806.         )
  807.  
  808.  
  809.     ;** set novice user to expert briefly
  810.     (set #UserNovice 0)
  811.     (if (= @user-level 0)
  812.       (
  813.         (user 2)
  814.         (set #UserNovice 1)
  815.       )
  816.     )
  817.       (set #DestinationType
  818.       (askchoice
  819.         (prompt #DestChoicePrompt)
  820.         (choices #HardDiskChoiceMsg
  821.              #FloppyChoiceMsg
  822.         )
  823.         (help #DestChoiceHelp)
  824.         (default #DiskDefault)
  825.       )
  826.     )
  827.     ;** set novice user back to novice
  828.     (if (= #UserNovice 1)
  829.       (user 0)
  830.     )
  831.  
  832.     (if (= #DestinationType 0)
  833.         (set #DestinationType "Hard")
  834.         (set #DestinationType "Floppy")
  835.     )
  836.     )
  837. )
  838.  
  839. ;------------------------------------------------------
  840. ;// Choose hard disk destination for datastore drawer
  841. (procedure @ChooseHDDest
  842.     (
  843.         ;** Find default drawer
  844.         (set #DefaultDest (getassign "Work" "d"))
  845.         (if (= #DefaultDest "")
  846.             (
  847.                 (set #DefaultDest (getassign "HD3" "d"))
  848.                 (if (= #DefaultDest "")
  849.                     (
  850.                         (set #DefaultDest (getassign "HD2" "d"))
  851.                         (if (= #DefaultDest "")
  852.                 (
  853.                 (set #DefaultDest (getassign "HD1" "d"))
  854.                 (if (= #DefaultDest "")
  855.                   (
  856.                     (set #DefaultDest (getassign "DH1" "d"))
  857.                     (if (= #DefaultDest "")
  858.                       (
  859.                         (set #DefaultDest (getassign "HD0" "d"))
  860.                         (if (= #DefaultDest "")
  861.                           (
  862.                             (set #DefaultDest "DH0:")
  863.                             (if (= #UserNovice 1)
  864.                               (user 2)
  865.                             )
  866.                           )
  867.                         )
  868.                       )
  869.                     )
  870.                   )
  871.                 )
  872.               )
  873.             )
  874.           )
  875.         )
  876.             )
  877.         )
  878.         ;** Ask for destination
  879.         (set #DestDrawer
  880.             (askdir
  881.                 (prompt #HardDiskDestChoiceMsg)
  882.                 (help #HardDiskDestChoiceHelp)
  883.                 (default #DefaultDest)
  884.             )
  885.         )
  886.     (if (= #UserNovice 1)
  887.       (user 0)
  888.     )
  889.     )
  890. )
  891.  
  892.  
  893. ;------------------------------------------------------
  894. ;// Find HD Destination and check enough space
  895. (procedure @FindHDDest
  896.     (
  897.         (set DSExists 0)
  898.     (while (= DSExists 0)
  899.             (
  900.           (@ChooseHDDest)
  901.           (while (< (getdiskspace #DestDrawer) #HDSpaceNeededBytes)
  902.             (
  903.               (if (< (getdiskspace #DestDrawer) #HDSpaceNeededBytes)
  904.                 (
  905.                             (if (= @user-level 0)
  906.                               (
  907.                                 (user 2)
  908.                                 (set #UserNovice 1)
  909.                               )
  910.                             )
  911.                   (message #NoDiskSpaceMsg1 (/ (/ #HDSpaceNeededBytes 1024) 1024) #NoDiskSpaceMsg2)
  912.                   (@ChooseHDDest)
  913.                 )
  914.                  )
  915.             )
  916.             ) ;end while
  917.             (@CheckExistsAlready)
  918.         )
  919.       );end while
  920.     (if (= #UserNovice 1)
  921.       (user 0)
  922.     )
  923.     )
  924. )
  925.  
  926. ;------------------------------------------------------
  927. ;// Procedure to check if Datastore exists already in destination
  928. ;// Replace or choose again if so
  929. (procedure @CheckExistsAlready
  930.     (
  931.     (if (exists (tackon #DestDrawer #DSDrawerName))
  932.       (
  933.         (set ChooseAgainAnswer
  934.           (askbool
  935.             (prompt #DrawerExistsMsg)
  936.             (choices #DrawerExistsChoice1 #DrawerExistsChoice2)
  937.             (help #DrawerExistsHelp)
  938.             (default 1)
  939.           )
  940.         )
  941.         (if (= ChooseAgainAnswer 0)
  942.           (
  943.             (set DSExists 0)
  944.           )
  945.           (
  946.             (set DSExists 1)
  947.           )
  948.         )
  949.       )
  950.       (;else
  951.         (set DSExists 1)
  952.       )
  953.     );endif
  954.     )
  955. )
  956.  
  957. ;------------------------------------------------------
  958. ;// Create Datastore drawers in chosen destination
  959. (procedure @CreateDrawers
  960.     (
  961.         (working #WorkingMsg)
  962.         (set #InsideHDDest (tackon #DestDrawer #DSDrawerName))
  963.         ;// Make the Datastore drawer
  964.         (makedir #InsideHDDest (infos))
  965.  
  966.         ;// Make the Help drawer
  967.         (set #HDHelpDest (tackon #InsideHDDest #DSHelpName))
  968.         (makedir #HDHelpDest)
  969.  
  970.         ;// Make the Docs drawer
  971.         (set #HDDocsDest (tackon #InsideHDDest #DSDocsName))
  972.         (makedir #HDDocsDest (infos))
  973.  
  974.         ;// Make the Pics drawer
  975.         (set #HDPicsDest (tackon #InsideHDDest #DSPicsName))
  976.         (makedir #HDPicsDest (infos))
  977.     )
  978. )
  979.  
  980. ;------------------------------------------------------
  981. ;// set up hard drive destinations
  982. (procedure @SetUpHDProgDests
  983.     (
  984.         (working #WorkingMsg)
  985.         (set #LibsDest (cat #LibsDefault ":"))
  986.         (set #ProgDest (cat #InsideHDDest "/"))
  987.         (set #ProgIcon (cat #ProgDest #ProgName))
  988.         (set #HelpDest (cat #HDHelpDest "/"))
  989.         (set #DocsDest (cat #HDDocsDest "/"))
  990.         (set #PicsDest (cat #HDPicsDest "/"))
  991.       (set #SystemFontsDest (cat "Sys:" #DSFontsName "/"))
  992.     )
  993. )
  994.  
  995. ;------------------------------------------------------
  996. ;// set up floppy disk destinations
  997. (procedure @SetUpFloppyProgDests
  998.     (
  999.         (set #ProgDest (cat #DSDiskName ":"))
  1000.         (set #HelpDest (cat #DSFilesName ":" #DSHelpName "/"))
  1001.         (set #DocsDest (cat #DSFilesName ":" #DSDocsName "/"))
  1002.         (set #PicsDest (cat #DSDiskName ":" #DSPicsName "/"))
  1003.       (set #SystemFontsDest (cat #DSDiskName ":" #DSFontsName "/"))
  1004.     (set #LibsDest (cat #DSDiskName ":Libs/"))
  1005.     (set #DataTypesDest (cat #DSDiskName ":Devs/" #DataTypesDrawerName "/"))
  1006.     (set #ClassesDest
  1007.         (cat #DSDrawerName ":" #ClassesDrawerName "/" #DataTypesDrawerName "/")
  1008.     )
  1009.     )
  1010. )
  1011.  
  1012. ;------------------------------------------------------
  1013. ;// Check to make sure that none of the Datastore disks
  1014. ;// are in the internal drive before creating blank ones.
  1015. (procedure @CheckDisks
  1016.     (
  1017.         (set #NumberDisks (+ #NumberInstallDisks #NumNewDSDisks))
  1018.         (set #DiskBlank 1)
  1019.         (set n 0)
  1020.         (until (OR (= n #NumberDisks) (= #DiskBlank 0))
  1021.             (
  1022.                 (set #CheckDiskName
  1023.                     (select n
  1024.                         #DSInstallDisk
  1025.                         #DSDiskName
  1026.                         #DSFilesName
  1027.                     )
  1028.                 )
  1029.                 (if (= (getassign "df0" "d") (cat #CheckDiskName ":"))
  1030.                     (    ;disk is not blank
  1031.                         (set #DiskBlank 0)
  1032.                     )
  1033.                 )
  1034.                 (set n (+ n 1))
  1035.             )
  1036.         )
  1037.     )
  1038. )
  1039.  
  1040.  
  1041. ;------------------------------------------------------
  1042. ;// Format and name the disk given in #FormatDiskName
  1043. (procedure @FormatDisk
  1044.     (
  1045.         (working #FormatWorkingMsg)
  1046.         ;*** USE 2.0 FORMAT COMMAND ***
  1047.         (if (= #FormatChoice 0)
  1048.             (
  1049.                 (set #FormatCheck
  1050.                     (run ("DSUtils:Format drive=df0: name=%s FFS NOICONS" #FormatDiskName))
  1051.                 )
  1052.             )
  1053.             (
  1054.                 (set #FormatCheck
  1055.                     (run ("DSUtils:Format drive=df0: name=%s FFS QUICK NOICONS" #FormatDiskName))
  1056.                 )
  1057.             )
  1058.         )
  1059.     (if (OR (> #FormatCheck 0) (< #FormatCheck 0))
  1060.         (set #NoError 1)
  1061.            (set #NoError 0)
  1062.     )
  1063.         (if (= #NoError 0)
  1064.             (
  1065.                 (if (= #FormatDiskName #DSDiskName)
  1066.                     (run "DSUtils:Install2.1 df0:")
  1067.                 )
  1068.             )
  1069.         ); endif
  1070.     )
  1071. )
  1072.  
  1073. ;------------------------------------------------------
  1074. ;// routine to check disk in drive ok and format it if so
  1075. (procedure @Makedisk
  1076.     (
  1077.     (set #NoError 1)
  1078.     (while (= #NoError 1)
  1079.         (
  1080.             ;** Make sure that the install disks are not in the drive
  1081.             (run "DSUtils:Wait 6")  ;Wait a bit for disk access to stop
  1082.             (@CheckDisks)
  1083.             (if (= #DiskBlank 0)
  1084.               (
  1085.                 (message #NotBlankMsg1 #CheckDiskName #NotBlankMsg2)
  1086.               )
  1087.               (
  1088.                 (set #NoError 1)
  1089.                 (@FormatDisk)
  1090.                 (if (= #NoError 1)
  1091.                   (
  1092.                     (message #FormatError (help #FormatErrorHelp))
  1093.                   )
  1094.                 );endif
  1095.               )
  1096.             );endif
  1097.         )
  1098.     );endwhile
  1099.   )
  1100. )
  1101.  
  1102. ;------------------------------------------------------
  1103. ;// Create floppy disk 1
  1104. (procedure @CreateDisk1
  1105.     (
  1106.     ;// Copy system files from install disk to Ram...
  1107.     (copyfiles
  1108.         (source (cat #DSInstallDisk ":Libs"))
  1109.         (dest "RAM:Libs")
  1110.         (all)
  1111.         (optional "force")
  1112.     )
  1113.     (copyfiles
  1114.         (source (cat #DSInstallDisk ":c"))
  1115.         (dest "RAM:c")
  1116.         (all)
  1117.         (optional "force")
  1118.     )
  1119.     (copyfiles
  1120.         (source (cat #DSInstallDisk ":l"))
  1121.         (dest "RAM:l")
  1122.         (all)
  1123.         (optional "force")
  1124.     )
  1125. ;    (copyfiles
  1126. ;        (source (cat #DSInstallDisk ":system"))
  1127. ;        (dest "RAM:system")
  1128. ;        (all)
  1129. ;        (optional "force")
  1130. ;   )
  1131.     (copyfiles
  1132.       (source (cat #DSInstallDisk ":Devs"))
  1133.       (dest "RAM:Devs")
  1134.       (all)
  1135.       (optional "force")
  1136.     )
  1137.     (copyfiles
  1138.       (source (cat #DSInstallDisk ":prefs"))
  1139.       (dest "RAM:prefs")
  1140.       (all)
  1141.       (optional "force")
  1142.     )
  1143.  
  1144.         (copyfiles
  1145.           (source (cat #DSInstallName ":Locale"))
  1146.           (dest "RAM:Locale")
  1147.           (all)
  1148.           (optional "force")
  1149.         )
  1150.         ;# Don't want the installer.catalog if German
  1151.         (if (= @Language "deutsch")
  1152.             (run "ram:delete RAM:Locale/Catalogs/Deutsch/sys/installer.catalog" (safe))
  1153.         )
  1154.  
  1155.     ;// Now create the first disk
  1156.       (message #BlankDiskWarning
  1157.           (help #FloppyWarningHelp)
  1158.       )
  1159.       (set #FormatDiskName #DSDiskName)
  1160.       (@Makedisk)
  1161.  
  1162.     ;// Now copy all files from RAM to disk 1, then delete them.
  1163.     (set #FileSourceDisk #DSDiskName)
  1164.     (@GetDisk)
  1165.  
  1166.     (copyfiles
  1167.         (source "RAM:Libs")
  1168.         (dest (cat #DSDiskName ":Libs"))
  1169.         (all)
  1170.         (optional "force")
  1171.     )
  1172.         (run "ram:delete RAM:Libs all" (safe))
  1173.  
  1174.     (copyfiles
  1175.         (source "RAM:l")
  1176.         (dest (cat #DSDiskName ":l"))
  1177.         (all)
  1178.         (optional "force")
  1179.     )
  1180.         (run "ram:delete RAM:l all" (safe))
  1181.  
  1182. (complete 20)
  1183.  
  1184.     (copyfiles
  1185.         (source "RAM:c")
  1186.         (dest (cat #DSDiskName ":c"))
  1187.         (all)
  1188.         (optional "force")
  1189.     )
  1190.         (run "ram:delete RAM:c all" (safe))
  1191.  
  1192. ;    (copyfiles
  1193. ;        (source "RAM:system")
  1194. ;        (dest (cat #DSDiskName ":system"))
  1195. ;        (all)
  1196. ;        (optional "force")
  1197. ;    )
  1198. ;        (run "ram:delete RAM:system all" (safe))
  1199.  
  1200.     (copyfiles
  1201.       (source "RAM:Devs")
  1202.       (dest (cat #DSDiskName ":Devs"))
  1203.       (all)
  1204.       (optional "force")
  1205.     )
  1206.         (run "ram:delete RAM:Devs all" (safe))
  1207.  
  1208.     (copyfiles
  1209.       (source "RAM:prefs")
  1210.       (dest (cat #DSDiskName ":prefs"))
  1211.       (all)
  1212.       (optional "force")
  1213.     )
  1214.         (run "ram:delete RAM:prefs all" (safe))
  1215.  
  1216.     (copyfiles
  1217.       (source "RAM:Locale")
  1218.       (dest (cat #DSDiskName ":Locale"))
  1219.       (all)
  1220.       (optional "force")
  1221.     )
  1222.         (run "ram:delete RAM:Locale all" (safe))
  1223.  
  1224.         ;## Now install other devices
  1225.         ;## DISK SWAP to get rest of archives
  1226.     (set #FileSourceDisk #DSInstallDisk)
  1227.     (@GetDisk)
  1228.  
  1229.  
  1230.     ;// ... some archives...
  1231.     (copyfiles
  1232.             (source (cat #DSInstallDisk ":Archive"))
  1233.             (dest "DSTemp:")
  1234.             (pattern ("~(Datastore.lha|Pictures.lha|Databases.lha|Help.lha)"))
  1235.             (optional "force")
  1236.           (safe)
  1237.         )
  1238.  
  1239.  
  1240.         ;## DISK SWAP back again to dearchive to disk
  1241.     (set #FileSourceDisk #DSDiskName)
  1242.     (@GetDisk)
  1243.  
  1244.     (makedir (cat #DSDiskName ":" #DSPicsName) (infos))
  1245.  
  1246.     (set #UnpackFile (cat #ArchiveLocation #DevicesArchiveName))
  1247.     (set #UnpackDest (cat #DSDiskName ":Devs/"))
  1248.     (@UnpackFiles)
  1249.         (run (cat "ram:delete " #ArchiveLocation #DevicesArchiveName) (safe))
  1250.  
  1251. (complete 30)
  1252.  
  1253.         (@DearchiveScreenFonts)
  1254.         (run (cat "ram:delete " #ArchiveLocation #SystemFontsArchiveName) (safe))
  1255.  
  1256.         (@InstallASL)
  1257.         (run (cat "ram:delete " #ArchiveLocation #ASLArchiveName) (safe))
  1258.  
  1259.         (@InstallAmigaGuide)
  1260.         (run (cat "ram:delete " #ArchiveLocation #AmigaGuideArchiveName) (safe))
  1261.  
  1262.     (set #UnpackFile (cat #ArchiveLocation #MathLibsArchiveName))
  1263.     (set #UnpackDest (cat #DSDiskName ":Libs/"))
  1264.     (@UnpackFiles)
  1265.         (run (cat "ram:delete " #ArchiveLocation #MathLibsArchiveName) (safe))
  1266.  
  1267.     (set #UnpackFile (cat #ArchiveLocation #StartupArchiveName))
  1268.     (set #UnpackDest (cat #DSDiskName ":S/"))
  1269.     (@UnpackFiles)
  1270.         (run (cat "ram:delete " #ArchiveLocation #StartupArchiveName) (safe))
  1271.  
  1272.       (if (= #InstallDataTypes "True")
  1273.           (
  1274.             ;// Install Datatypes...
  1275.             (makedir (cat #DSDiskName ":Devs/" #DataTypesDrawerName))
  1276.             (set #UnpackFile (cat #ArchiveLocation #DataTypesArchiveName))
  1277.             (set #UnpackDest #DataTypesDest)
  1278.             (@UnpackFiles)
  1279.             )
  1280.         )
  1281.         (run (cat "ram:delete " #ArchiveLocation #DataTypesArchiveName) (safe))
  1282.  
  1283. (complete 40)
  1284.  
  1285.       (if (= #InstallDataTypes "True")
  1286.           (
  1287.             ;// Install Datatypes Library...
  1288.             (set #UnpackFile (cat #ArchiveLocation #DataTypesLibArchiveName))
  1289.             (set #UnpackDest (cat #DSDiskName ":Libs/"))
  1290.             (@UnpackFiles)
  1291.             )
  1292.         )
  1293.         (run (cat "ram:delete " #ArchiveLocation #DataTypesLibArchiveName) (safe))
  1294.  
  1295.       (if (= #InstallDataTypes "True")
  1296.           (
  1297.             ;// Install Datatypes Classes...
  1298.             (makedir (cat #DSDrawerName ":" #ClassesDrawerName))
  1299.             (makedir
  1300.                 (cat #DSDrawerName ":" #ClassesDrawerName "/" #DataTypesDrawerName)
  1301.             )
  1302.             (set #UnpackFile (cat #ArchiveLocation #ClassesArchiveName))
  1303.             (set #UnpackDest #ClassesDest)
  1304.             (@UnpackFiles)
  1305.             )
  1306.         )
  1307.         (run (cat "ram:delete " #ArchiveLocation #ClassesArchiveName) (safe))
  1308.  
  1309.  
  1310.         ;## DISK SWAP to get rest of archives
  1311.     (set #FileSourceDisk #DSInstallDisk)
  1312.     (@GetDisk)
  1313.  
  1314.     ;// ... some archives...
  1315.     (copyfiles
  1316.             (source (cat #DSInstallDisk ":Archive"))
  1317.             (dest "DSTemp:")
  1318.             (pattern ("(Datastore.lha|Pictures.lha)"))
  1319.             (optional "force")
  1320.           (safe)
  1321.         )
  1322.  
  1323.  
  1324.         ;## DISK SWAP back again to dearchive to disk
  1325.     (set #FileSourceDisk #DSDiskName)
  1326.     (@GetDisk)
  1327.  
  1328.         (@InstallPictures)
  1329.         (run (cat "ram:delete " #ArchiveLocation #PicsArchiveName) (safe))
  1330.  
  1331. (complete 50)
  1332.  
  1333.         (@InstallProg)
  1334.         (run (cat "ram:delete " #ArchiveLocation #ProgArchiveName) (safe))
  1335.  
  1336.         (tooltype
  1337.             (dest #DSToolDest)
  1338.             (setstack 15000)
  1339.         )
  1340.  
  1341.         (tooltype
  1342.             (dest #DSToolDest)
  1343.             (settooltype #LanguageTool @Language)
  1344.         )
  1345.         (tooltype
  1346.             (dest #DSToolDest)
  1347.             (settooltype #DocsTool #DocsDest)
  1348.         )
  1349.         (tooltype
  1350.             (dest #DSToolDest)
  1351.             (settooltype #PicsTool #PicsDest)
  1352.         )
  1353.         (tooltype
  1354.             (dest #DSToolDest)
  1355.             (settooltype #HelpTool #HelpDest)
  1356.         )
  1357. (complete 60)
  1358.  
  1359.     )
  1360. )
  1361.  
  1362. ;------------------------------------------------------
  1363. ;// Create floppy disk 2
  1364. (procedure @CreateDisk2
  1365.     (
  1366.     (set #FileSourceDisk #DSInstallDisk)
  1367.     (@GetDisk)
  1368.     (copyfiles
  1369.             (source (cat #DSInstallDisk ":Archive"))
  1370.             (dest "DSTemp:")
  1371.             (pattern ("(Databases.lha|Help.lha)"))
  1372.             (optional "force")
  1373.           (safe)
  1374.         )
  1375.  
  1376.         ;// Now create the second disk
  1377.       (message #BlankDiskWarning
  1378.           (help #FloppyWarningHelp)
  1379.       )
  1380.       (set #FormatDiskName #DSFilesName)
  1381.       (@Makedisk)
  1382.  
  1383. (complete 70)
  1384.  
  1385.         ;// Create the drawers with icons.
  1386.     (makedir (cat #DSFilesName ":" #DSDocsName) (infos))
  1387.  
  1388.     ;// Now copy all files from RAM to disk 2, then delete them.
  1389.     (set #FileSourceDisk #DSFilesName)
  1390.     (@GetDisk)
  1391.  
  1392.         (@InstallTemplates)
  1393.         (run (cat "ram:delete " #ArchiveLocation #DocsArchiveName) (safe))
  1394.  
  1395. (complete 80)
  1396.  
  1397.         (@InstallHelp)
  1398.         (run (cat "ram:delete " #ArchiveLocation #HelpArchiveName) (safe))
  1399.     )
  1400. )
  1401.  
  1402. ;------------------------------------------------------
  1403. ;// Install program files
  1404. (procedure @InstallProg
  1405.     (
  1406.       (working #WorkingMsg)
  1407.     (set #UnpackFile (cat #ArchiveLocation #ProgArchiveName))
  1408.     (set #UnpackDest #ProgDest)
  1409.     (@UnpackFiles)
  1410.   )
  1411. )
  1412.  
  1413. ;------------------------------------------------------
  1414. ;// Install help files
  1415. (procedure @InstallHelp
  1416.     (
  1417.         (working #WorkingMsg)
  1418.     (set #UnpackFile (cat #ArchiveLocation #HelpArchiveName))
  1419.     (set #UnpackDest #HelpDest)
  1420.     (@UnpackFiles)
  1421.     )
  1422. )
  1423.  
  1424. ;------------------------------------------------------
  1425. ;// Install templates
  1426. (procedure @InstallTemplates
  1427.     (
  1428.         (working #WorkingMsg)
  1429.     (set #UnpackFile (cat #ArchiveLocation #DocsArchiveName))
  1430.     (set #UnpackDest #DocsDest)
  1431.     (@UnpackFiles)
  1432.     )
  1433. )
  1434.  
  1435. ;------------------------------------------------------
  1436. ;// Install pictures
  1437. (procedure @InstallPictures
  1438.     (
  1439.         (working #WorkingMsg)
  1440.     (set #UnpackFile (cat #ArchiveLocation #PicsArchiveName))
  1441.     (set #UnpackDest #PicsDest)
  1442.     (@UnpackFiles)
  1443.     )
  1444. )
  1445.  
  1446. ;------------------------------------------------------
  1447. ;// Routine to install printer and fonts
  1448. (procedure @AddNewPrinter
  1449.     (
  1450.     (set #FileSourceDisk #DSInstallDisk)
  1451.     (@GetDisk)
  1452.  
  1453.     ;// Delete all in DSTemp: first...
  1454.         (run (cat "ram:delete DSTemp:#?" ) (safe))
  1455.     (set #ChosenDriver "Generic")
  1456.     (set #DriverSource (cat #DSInstallDisk ":Drivers"))
  1457.         (if (= #DestinationType "Floppy")
  1458.         (
  1459.             (set #DriverDest (cat #DSDiskName ":Devs/Printers"))
  1460.           )
  1461.           (
  1462.             (set #DriverDest "DEVS:Printers")
  1463.                 (set #CheckGeneric (cat #DriverDest "/" #ChosenDriver))
  1464.                 (if (exists #CheckGeneric)
  1465.                   (
  1466.                     (protect #CheckGeneric "+r+w+e+d")
  1467.                   )
  1468.                 )
  1469.           )
  1470.         )
  1471.  
  1472.     ;// Select printer (or driver) from list...
  1473.     (working #WorkingMsg)
  1474.     (set #SelectPrt
  1475.       (cat "DSUtils:select DSUtils:DSPrinterList")
  1476.     )
  1477.     (run #SelectPrt (safe))
  1478.     (set #ChosenDriver (getenv "wwDriver"))
  1479.     (working #WorkingMsg)
  1480.  
  1481.     ;// driver chosen so copy it to ram...
  1482.     (copyfiles
  1483.       (source #DriverSource)
  1484.       (dest #RamTempFile)
  1485.       (pattern #ChosenDriver)
  1486.       (optional "force")
  1487.       (nogauge)
  1488.     )
  1489.  
  1490.     ;// Now decompress Driver 'ChosenDriver' to destination '#RamTempFile'...
  1491.     (set #UnpackFile (tackon #RamTempFile #ChosenDriver))
  1492.     (set #UnpackDest "DSTemp:")
  1493.     (@UnpackFiles)
  1494.     (delete #UnpackFile)
  1495.  
  1496.     ;// get full uncompressed driver name...
  1497.     (run "c:List " #RamTempFile " LFORMAT %s >ENV:wwDriver")
  1498.     (set Driver (getenv "wwDriver"))
  1499.     (set DriverLen (strlen Driver))
  1500.     (set DriverLen (- DriverLen 1))
  1501.     (set #ChosenDriver
  1502.       (substr Driver 0 DriverLen)
  1503.     )
  1504.     ;// finally, copy driver to driver destination...
  1505.         (if (= #DestinationType "Floppy")
  1506.         (
  1507.             (set #FileSourceDisk #DSDiskName)
  1508.             (@GetDisk)
  1509.         )
  1510.     )
  1511.     (copyfiles
  1512.       (source #RamTempFile)
  1513.       (dest #DriverDest)
  1514.       (pattern #ChosenDriver)
  1515.       (optional "force")
  1516.     )
  1517.   )
  1518. )
  1519.  
  1520. ;------------------------------------------------------
  1521. ;// Delete any files from Ram and temporary Ram Drawer
  1522. (procedure @CleanUp
  1523.     (
  1524.     (working #WorkingMsg)
  1525.     (makeassign "DSTemp" (safe))
  1526.         (if (exists #RamTempFile)
  1527.         (
  1528.                 (set DeleteDrawer (cat "ram:delete " #RamTempFile " all force"))
  1529.                 (Run DeleteDrawer)
  1530.             )
  1531.         )
  1532.     (makeassign "DSUtils" (safe))
  1533.         (if (exists #RamUtils)
  1534.         (
  1535.                 (set DeleteDrawer (cat "ram:delete " #RamUtils " all force"))
  1536.                 (Run DeleteDrawer)
  1537.             )
  1538.         )
  1539.       (delete "Ram:delete"
  1540.           (optional "force")
  1541.       )
  1542.     )
  1543. )
  1544.  
  1545. ;------------------------------------------------------
  1546. ; ### Main
  1547. (complete 0)
  1548. (welcome)
  1549. (complete 5)
  1550. (@InitialChecks) ;// Copies relevent files to ram also
  1551. (@CheckHDorFloppy)
  1552.  
  1553. (complete 10)
  1554.  
  1555. (if (= #DestinationType "Hard")
  1556.     (
  1557.         ;// HD
  1558.  
  1559.     ; Install to Hard-disk
  1560.     (if (= #FullPath (cat #DSInstallDisk ":"))
  1561.         (Abort #HDBootedFromFloppy)
  1562.     )
  1563.  
  1564.       (set #ArchiveLocation (cat #DSInstallDisk ":Archive/"))
  1565.     (set #FileSourceDisk #DSInstallDisk)
  1566.     (@GetDisk)
  1567.     (@SetUpHDProgDests)
  1568.       (@CheckASL)
  1569.       (@CheckLocale)
  1570.  
  1571.       ;## if WB2.0 and on Hard disk
  1572.         (if (= #OSVersion 37)
  1573.             (if (= (getassign "LOCALE") "")
  1574.                 ;no assign, so assign Locale to RAM:
  1575.                 (startup #ProgName
  1576.                     (prompt #AskLocaleMsg)
  1577.                     (help #AskLocaleHelp)
  1578.                     (command #AskLocaleCmd)
  1579.                 )
  1580.             )
  1581.         )
  1582.  
  1583.       (@CheckParse)
  1584.         (@CheckDiskFont)
  1585.         (@CheckAmigaGuide)
  1586.         (@FindHDDest)
  1587. (complete 20)
  1588.         (@CreateDrawers)
  1589.  
  1590.     (@SetUpHDProgDests)
  1591.     (set @default-dest #DestDrawer)
  1592.         (@UnProtectFonts)
  1593. (complete 30)
  1594.         (@DearchiveScreenFonts)
  1595. (complete 40)
  1596.         (@InstallHelp)
  1597. (complete 50)
  1598.         (@InstallProg)
  1599. (complete 60)
  1600.         (@InstallTemplates)
  1601. (complete 70)
  1602.         (@InstallPictures)
  1603. (complete 80)
  1604.         (tooltype
  1605.             (dest #ProgIcon)
  1606.             (setstack 15000)
  1607.         )
  1608.  
  1609.         (tooltype
  1610.             (dest #ProgIcon)
  1611.             (settooltype #LanguageTool @Language)
  1612.         )
  1613.  
  1614.         (set DisabledHelp (cat ";" #HelpTool))
  1615.         (tooltype
  1616.             (dest #ProgIcon)
  1617.             (settooltype DisabledHelp (cat #DSHelpName "/"))
  1618.         )
  1619.  
  1620.         (set DisabledDocs (cat ";" #DocsTool))
  1621.         (tooltype
  1622.             (dest #ProgIcon)
  1623.             (settooltype DisabledDocs (cat #DSDocsName "/"))
  1624.         )
  1625.  
  1626.         (set DisabledPics (cat ";" #PicsTool))
  1627.         (tooltype
  1628.             (dest #ProgIcon)
  1629.             (settooltype DisabledPics (cat #DSPicsName "/"))
  1630.         )
  1631.     )
  1632.     (
  1633.         ;// Floppy
  1634.       (set #ArchiveLocation "DSTemp:")
  1635.     (@SetUpFloppyProgDests)
  1636.         (if (>= @user-level 2) ;expert only
  1637.             (
  1638.                 (set #FormatChoice
  1639.                     (askchoice
  1640.                         (prompt #FormatChoiceprompt)
  1641.                         (choices #FormatChoicemsg1 #FormatChoicemsg2)
  1642.                         (help #FormatChoice-help)
  1643.                         (default 0)
  1644.                     )
  1645.                 )
  1646.             )
  1647.         )
  1648.         ;// if expert then check user wants to create disk 1
  1649.         (if (>= @user-level 2)
  1650.             (
  1651.                 (set #CreateDiskChoice
  1652.                     (askbool
  1653.                         (prompt (cat #CreateDiskPrompt #DSDiskName))
  1654.                         (choices #ChoiceContinue #ChoiceSkip)
  1655.                         (help #CreateDSDiskHelp)
  1656.                         (default 1)
  1657.                     )
  1658.                 )
  1659.             )
  1660.           (set #CreateDiskChoice 1)
  1661.         )
  1662.     (if (= @user-level 0)
  1663.       (
  1664.         (user 2)
  1665.         (set #UserNovice 1)
  1666.       )
  1667.     )
  1668.         (if (= #CreateDiskChoice 1)
  1669.             (@CreateDisk1)
  1670.         )
  1671.     (if (= #UserNovice 1)
  1672.       (user 0)
  1673.     )
  1674.  
  1675.         ;// if expert then check user wants to create disk 2
  1676.         (if (>= @user-level 2)
  1677.             (
  1678.                 (set #CreateDiskChoice
  1679.                     (askbool
  1680.                         (prompt (cat #CreateDiskPrompt #DSFilesName))
  1681.                         (choices #ChoiceContinue #ChoiceSkip)
  1682.                         (help #CreateFilesDiskHelp)
  1683.                         (default 1)
  1684.                     )
  1685.                 )
  1686.             )
  1687.           (set #CreateDiskChoice 1)
  1688.         )
  1689.     (if (= @user-level 0)
  1690.       (
  1691.         (user 2)
  1692.         (set #UserNovice 1)
  1693.       )
  1694.     )
  1695.         (if (= #CreateDiskChoice 1)
  1696.             (@CreateDisk2)
  1697.         )
  1698.     (if (= #UserNovice 1)
  1699.       (user 0)
  1700.     )
  1701.     (set @default-dest "")
  1702.     )
  1703. )
  1704.  
  1705. (complete 90)
  1706.  
  1707.     (set #InstallPrinter 1)
  1708.  
  1709.     (if (< #UserNovice 1) ; Intermediate or Expert only
  1710.         (
  1711.             (set #InstallPrinter
  1712.                 (askbool
  1713.                     (prompt #PrinterChoicePrompt)
  1714.                     (choices #PrinterChoicemsg1 #PrinterChoicemsg2)
  1715.                     (help #PrinterChoice-help)
  1716.                     (default 0)
  1717.                 )
  1718.             )
  1719.         )
  1720.     )
  1721.  
  1722. (if (= #InstallPrinter 1)
  1723.     (
  1724.         (@AddNewPrinter)
  1725.     )
  1726. )
  1727.  
  1728. (@CleanUp)
  1729. (complete 100)
  1730. (if (= #DestinationType "Hard")
  1731.     (exit)
  1732.     (exit #FloppyFinishedMsg)
  1733. )
  1734.